코딩테스트 연습 - 내적 | 프로그래머스 스쿨

[ 템플릿 코드 ]

 
#include <string>
#include <vector>
 
using namespace std;
 
int solution(vector<int> a, vector<int> b) {
    int answer = 1234567890;
    return answer;
}
 

[ 풀이 ]

 
#include <vector>
 
using namespace std;
 
int solution(vector<int> a, vector<int> b)
{
    int answer = 0;
 
    for (int i = 0; i < a.size(); i++)
    {
        answer += a[i] * b[i];
    }
 
    return answer;
}
 

[ 해설 ]

#include <vector>     // vector(동적 배열) 사용을 위한 헤더
 
using namespace std;  // std::vector, std::cout 처럼 std::를 생략하기 위해 사용
 
// 두 정수 벡터 a, b를 받아 내적을 계산하는 함수
int solution(vector<int> a, vector<int> b)
{
    // 곱한 값들을 누적해서 저장할 변수
    // 처음에는 아무것도 더하지 않았으므로 0으로 초기화
    int answer = 0;
 
    // i를 0부터 시작해서
    // i가 a의 길이보다 작을 동안 반복
    // 반복이 끝날 때마다 i를 1 증가
    for (int i = 0; i < a.size(); i++)
    {
        // 같은 위치의 원소끼리 곱한 후
        // answer에 누적해서 더함
        //
        // 예)
        // a[0] = 1, b[0] = -3
        // answer += 1 * -3
        //
        // answer += 는
        // answer = answer + (a[i] * b[i]);
        // 와 같은 의미
        answer += a[i] * b[i];
    }
 
    // 모든 원소의 곱을 더한 최종 결과 반환
    return answer;
}
 
 

[ 타 답안 ]

 
#include <vector> // vector(동적 배열) 자료형을 사용하기 위한 헤더 파일  
  
using namespace std; // std::vector 처럼 std::를 매번 쓰지 않기 위해 사용  
  
// 두 벡터 a, b를 받아 내적을 계산하는 함수  
int solution(vector<int> a, vector<int> b)  
{  
// 곱한 값들의 합을 저장할 변수  
// 아직 아무것도 계산하지 않았으므로 0으로 초기화  
int result = 0;  
  
// 배열의 인덱스로 사용할 변수  
// 첫 번째 원소부터 확인하기 위해 0으로 시작  
int i = 0;  
  
// i가 a의 길이보다 작은 동안 반복  
// 예를 들어 a의 길이가 4라면  
// i = 0, 1, 2, 3 까지 반복  
while (i < a.size())  
{  
// 같은 위치(인덱스)의 원소끼리 곱한 뒤  
// result에 누적해서 더함  
//  
// 예)  
// a[0] = 1, b[0] = -3  
// result = 0 + (1 * -3)  
// result = -3  
//  
// 다음 반복에서는  
// result = -3 + (2 * -1)  
// result = -5  
result = result + a[i] * b[i];  
  
// 현재 인덱스의 계산이 끝났으므로  
// 다음 원소를 확인하기 위해 i를 1 증가  
i++;  
}  
  
// 모든 원소의 곱을 더한 최종 결과 반환  
return result;  
}
 

C++ CodingTest